
import axios from 'axios'
import store from '@/store/index.js'
import { Message } from 'element-ui';
// 设置加载动画
import { showLoading, hideLoading } from './loading';

let http = axios.create({
    timeout: 5000
})

// 请求拦截器
http.interceptors.request.use((config) => {
    //config配置
    // 运用短路运算看看又没哟token没有就为空
    // console.log(sessionStorage.getItem('token')); 
    let token = sessionStorage.getItem('token') || store.state.token 
    showLoading();
    if (token) {
        //token有值就说名用户已经登录,
        // 就把token值放到请求头中
        // 以追加属性的形式给请求头添加x-token
        config.headers['x-token'] = token
    }
    // 这里操作完了配置之后就要return他,
    // 作用告诉拦截器你修改了他
    return config
})

// 响应拦截器
http.interceptors.response.use((response) => {
    // console.log(response);
    hideLoading();
    return response
}, (error) => {
    hideLoading();
    return Promise.reject(
        (function (resp) {
            Message.error({
                showClose: true,
                message: resp.data.msg,
              })
            console.log(Message);
            console.group(`%c【代码${resp.status}: ${resp.data.msg}】`, 'color:blue;font-size:15px;');
            let inputdata = resp.config.data ? JSON.parse(resp.config.data) : undefined;
            let inputparams = resp.config.params ? resp.config.params : undefined;
            console.log(
                `%cPREVIEW:\n`, 'color:green;font-weight:bold;font-size:18px',
                `Data:`, inputdata, `\n`,
                `Params:`, inputparams, `\n`,
                { Method: resp.config.method }, `\n`,
                { Url: resp.config.url }, `\n`,
                { Envir: process.env.NODE_ENV }, `\n`,
                { Type: resp.config.headers['Content-Type'] }, `\n`,
                { msg: resp.data.msg }, `\n`,
                { status: resp.status }, `\n`,
            );
            console.groupEnd();
        })(error.response)
    );
})

export default http
